The present invention relates to communication networks and particularly to packet based networks which accommodate packets of various priorities.
Messages transmitted from a source to a destination over a packet based network are broken up by the source into packets which are sent to the destination independently of each other. A header is annexed to each packet. The header identifies the packet providing, among other information, the source and destination of the packet, the length of the packet, and the message to which the packet belongs. The length of the packet which appears in the header is used by the destination to determine which of the bits it receives belongs to the packet. Therefore, changing the length of the packet after the header was transmitted is not considered feasible.
In many networks, especially wide area networks and networks which include low bandwidth links such as telephone lines, it is important to minimize the amount of traffic through the network. Therefore, it is desired to maximize the ratio between the amount of data of packets and the header size of the packets.
When a source transmits both time critical urgent data, such as real time packets, and non-urgent data, precedence must be given to the time critical data. The precedence is given by tagging the time critical packets as urgent and transmitting the urgent packets before other packets from a buffer of the source. However, if a source begins transmitting a long packet of about 1500 bytes and after only a few bits are sent an urgent packet is received in the buffer of the source, the urgent packet will have to wait for the entire long packet to be sent. On links with a speed of 9600 bits/second, this can require more than a second.
One method of reducing the delay incurred on urgent packets is to reduce the maximal size of all the packets transmitted along the link. Thus, the maximal amount of time that an urgent packet must wait is less than when full size packets are transmitted on the link. The size of large packets may be reduced by fragmenting the long packet into a plurality of fragment packets with separate headers. This, however, decreases the ratio between the data amount and the length of the header of the packets and/or fragments.
U.S. Pat. No. 5,956,341 to Galand et al., the disclosure of which is incorporated herein by reference, describes a method for simulating a high bandwidth link from a plurality of low bandwidth links. In this method, each packet is segmented into a plurality of segments which contain 60 bytes or less of data and a header of 4 bytes (additional to the IP packet headers of the segmented packets). Thus, segments of high priority need wait only for transmission of a single packet.
An aspect of some preferred embodiments of the invention relates to a communication system which supports interrupts during transmission of a packet. When an urgent packet is received by a transmitter while transmitting a current packet to a receiver, the transmitter sends an interrupt signal to the receiver, indicating that an urgent packet is being transmitted before the completion of the transmission of the current packet.
In a preferred embodiment of the present invention, after the urgent packet is entirely transmitted, the transmitter continues to transmit the packet which was interrupted, from the point at which it was interrupted.
In some preferred embodiments of the present invention, the interrupt signals are sent as interrupt indication bits within the interrupted packet. Preferably, the interrupt indication bits may be placed within the packets only at predetermined stop points. In a preferred embodiment of the invention, the locations of the stop points are fixed for all the transmitted packets. For example, the stop points may be located after every 64 (or any other number) of transmitted bits. Alternatively, the locations of the stop points are a function of information in a header of the current packet and/or of external information, such as data on the connectivity of a network including the transmitter and receiver and the time of day.
In a preferred embodiment of the present invention, one or more bits are inserted at each of the stop points regardless of whether an interrupt is being declared. The one or more inserted bits preferably have two possible values, either xe2x80x9cno interruptxe2x80x9d or xe2x80x9cinterruptxe2x80x9d. Normally, the one or more inserted bits have a no interrupt value. However, when an urgent packet is received at the transmitter while transmitting another non-urgent packet, at the next stop point the transmitter sets the value of the one or more inserted bits to interrupt and immediately begins transmitting the urgent packet. Alternatively, upon receiving an urgent packet, the transmitter immediately begins to transmit the urgent packet instead of the current packet, and sets the indication bits at the next stop point, accordingly.
In some preferred embodiments of the present invention, a second packet which interrupted a first packet may also be interrupted by a third packet. In a preferred embodiment, the packets are assigned levels of urgency and each packet may interrupt those packets which are less urgent than the interrupting packet.
An aspect of some preferred embodiments of the invention relates to assigning stop points and inserting bits at the stop points to indicate no interrupts, only to some of the packets transmitted by a specific transmitter. In a preferred embodiment of the invention, packets of a high urgency level are sent without inserted bits, and therefore these packets are never interrupted. Alternatively or additionally, packets shorter than a predetermined length are sent without inserted bits. In a preferred embodiment of the present invention, a short set of bits is added to each transmitted packet to indicate whether the packet includes inserted bits.
Further alternatively or additionally, interrupt indication bits are inserted only in packets sent to specific destinations, for example, destinations which comprise apparatus which supports interrupt indication bits.
There is therefore provided in accordance with a preferred embodiment of the present invention, a method of transmitting packets from a transmitter to a receiver, including providing a first packet including a header, transmitting a leading part of the first packet on a link from the transmitter to the receiver, the leading part not including a header separate from the header of the entire packet, and transmitting a second packet on the link after the leading part of the first packet was transmitted and before a remaining part of the first packet was transmitted.
Preferably, transmitting the second packet includes transmitting a packet which is more urgent than the first packet.
In a preferred embodiment, the second packet includes a real time audio packet.
Preferably, the method includes notifying the receiver, after transmitting the leading part of the first packet, that data transmitted on the channel from a specific point on belongs to the second packet. Preferably, notifying the receiver includes transmitting a predetermined sequence of bits on the channel after the leading part of the first packet. Preferably, transmitting a predetermined sequence of bits includes transmitting the sequence at one or more predetermined stop points along the first packet.
Preferably, the method includes transmitting a predetermined sequence of bits, different from the sequence used to notify that the data from a specific point on belongs to the second packet, at those predetermined stop points not used for the notifying.
In a preferred embodiment, notifying the receiver that the bits transmitted from a specific point on belong to the second packet includes notifying the receiver before transmitting any part of the second packet. Preferably, notifying the receiver that the bits transmitted from a specific point on belong to the second packet includes notifying the receiver that the bits transmitted immediately after the notification belong to the second packet.
Alternatively or additionally, notifying the receiver that the bits transmitted from a specific point on belong to the second packet includes notifying the receiver after transmitting at least part of the second packet.
Preferably, the method includes transmitting a remaining part of the first packet, not previously transmitted, after transmitting the second packet. Preferably, the leading part of the first packet is not retransmitted after transmitting the second packet.
Preferably, the second packet is ready for transmission only after the transmitting of the leading part of the first packet. Preferably, transmitting the leading part of the first packet includes transmitting a field which indicates the length of the entire first packet.
Preferably, transmitting the second packet includes receiving the second packet after the transmitting of the leading part of the first packet, determining whether the second packet should be transmitted prior to the transmission of a remainder of the first packet, and transmitting the second packet responsive to the determination.
Preferably, a plurality of first packets are transmitted on the link and transmitting the second packet before a remaining part of the first packet was transmitted is performed for less than all of the first packets.
There is further provided in accordance with a preferred embodiment of the present invention, a method of transmitting packets from a transmitter to a receiver, including beginning to transmit a first packet, receiving a second packet after transmitting one or more bits of the first packet, determining whether the second packet should be transmitted prior to the transmission of a remainder of the first packet, and transmitting the second packet responsive to the determination before transmitting a remaining part of the first packet.
There is further provided in accordance with a preferred embodiment of the present invention, a method of transmitting packets from a transmitter to a receiver, including transmitting a first packet from the transmitter to the receiver, and transmitting at predetermined stop points within the first packet a set of bits which indicate that no interruption is being declared in the transmission of the first packet.
Preferably, the set of indicating bits indicates that the following bits until a next stop point belong to the first packet. Alternatively, the set of indicating bits indicates that the previous bits from a previous stop point belong to the first packet. Preferably, the predetermined stop points are located at predetermined fixed intervals of bits within the first packet. Preferably, the predetermined stop points are located at adjustable locations within the first packet. Alternatively or additionally, indication of the locations of the predetermined stop points is contained in at least one field of a header of the first packet.
There is further provided in accordance with a preferred embodiment of the present invention, a transmitter, including a buffer operative to receive regular packets and urgent packets, a physical layer unit which transmits packets from the buffer, and a controller adapted to interrupt the transmission of a packet of which at least one bit was already transmitted and to initiate the transmission of an urgent packet before a remaining part of the interrupted packet was transmitted responsive to reception of the urgent packet in the buffer.
Preferably, the buffer includes a regular buffer for regular packets and an urgent buffer for urgent packets.
There is further provided in accordance with a preferred embodiment of the present invention, a transmitter, including a buffer which receives packets which include respective headers, and a physical layer unit which transmits packets from the buffer, at least one first packet is transmitted after transmitting a leading part of a second packet and before transmitting a remaining part of the second packet, the leading part of the second packet not including a header separate from the header of the entire second packet.
There is further provided in accordance with a preferred embodiment of the present invention, a transmitter, including a buffer which receives packets for transmission, a physical layer unit which transmits packets from the buffer, and a processor which inserts at predetermined stop points within the transmitted packets a set of bits which indicates whether an interruption is being declared in the transmission of the packet.
There is further provided in accordance with a preferred embodiment of the present invention, a receiver, including a physical layer unit which receives bits over a link, and a processor which groups the bits into packets, at least one first packet is grouped from bits received after receiving a leading part of a second packet and before receiving a remaining part of the second packet, the leading part of the second packet not including a header separate from the header of the entire second packet.
There is further provided in accordance with a preferred embodiment of the present invention, a receiver, including a physical layer unit which receives a stream of bits, and a processor which examines at predetermined stop points within the stream a set of bits which indicates whether the stream includes bits from a second packet before all the bits from a first packet were included in the stream.
Preferably, the processor removes the set of bits from the stream. Preferably, the processor is adapted to divide the stream into packets responsive to the examination.
There is further provided in accordance with a preferred embodiment of the present invention, a communication system, including a communication link, a transmitter operative to transmit a stream of bits on the communication link, which stream includes one or more sets of indication bits which indicate whether bits from a first packet have been included in the stream between bits from a second packet, and a receiver operative to identify the indication bits and parse the stream into packets responsive to the indication bits.
There is further provided in accordance with a preferred embodiment of the present invention, a communication system, including a communication link, a receiver which receives packets over the communication link, and a transmitter which transmits packets over the communication link and is operative, upon receiving an urgent packet, to defer transmission of a packet of which at least one bit was already transmitted in order to transmit an urgent packet before a remaining part of the interrupted packet was transmitted, and to notify the receiver of the transmitted urgent packet.